# -*- coding:utf-8 -*-
"""
@author: 
@file: upload.py
@time: 2023/12/20 10:33
@desc: 
"""
from django.shortcuts import render, HttpResponse
from django import forms
from app01.utils.bootstrap import BootStrapForm,BootStrapModelForm
import os
from app01 import models


def upload_list(request):
    """ 普通上传文件 """
    if request.method == "GET":
        return render(request, 'upload_list.html')

    # print(request.POST)
    # print(request.FILES)
    file_object = request.FILES.get("avatar")

    f = open(file_object.name, mode='wb')
    for chunk in file_object.chunks():
        f.write(chunk)
    f.close()

    return HttpResponse("...")


class UpForm(BootStrapForm):
    bootstrap_exclude_fields = ['img']
    name = forms.CharField(label='姓名')
    age = forms.IntegerField(label="年龄")
    img = forms.FileField(label="头像")


def upload_form(request):
    title = "Form上传"
    if request.method == "GET":
        form = UpForm()
        return render(request, 'upload_form.html', {"form": form, "title": title})

    form = UpForm(data=request.POST, files=request.FILES)
    if form.is_valid():
        # print(form.cleaned_data)
        # 读取到内容, 自己处理每个字段的数据

        image_object = form.cleaned_data.get("img")
        from django.conf import settings

        # file_path = "app01/static/img/{}".format(image_object.name)
        media_path = os.path.join("media", image_object.name)

        f = open(media_path, mode='wb')
        for chunk in image_object.chunks():
            f.write(chunk)
        f.close()

        # 2.将图片文件路径写入到数据库
        models.Boss.objects.create(
            name=form.cleaned_data['name'],
            age=form.cleaned_data['age'],
            img=media_path
        )
        return HttpResponse("...")
    return render(request, 'upload_form.html', {"form": form, "title": title})


class UpModelForm(BootStrapModelForm):
    bootstrap_exclude_fields = ['img']
    class Meta:
        model = models.City
        fields = '__all__'

def upload_modal_form(request):
    """ ModalFrom上传文件和数据 """
    title = 'ModalFrom上传'
    if request.method == 'GET':
        form = UpModelForm()
        return render(request, 'upload_form.html',{'form': form, 'title': title})

    form = UpModelForm(data=request.POST, files=request.FILES)
    if form.is_valid():
        form.save()
        return HttpResponse('成功')


